Coordinating the execution of a voice command across multiple connected devices

ABSTRACT

A computer-implemented method includes exchanging device data, associated with a first participating user device, with the one or more second participating user devices; receiving audio data associated with a voice command; exchanging the audio data with the one or more second participating user devices; identifying, by the first participating user device, a voice command based on exchanging the audio data; determining which one of the first participating user device or the one or more second participating user devices should respond to the voice command based on details of the voice command and the exchanging the device data; responding to the voice command based on determining that the first participating user device should respond to the voice command; and signaling a particular second participating user device to respond to the voice command based on determining that the particular second participating user device should respond to the voice command.

BACKGROUND

The present invention generally relates to recognizing and executingvoice commands and, more particularly, to recognizing and coordinatingthe execution of voice commands across multiple connected devices.

A user device (e.g., smart phone, tablet, personal assistant device,television, etc.) may include voice recognition capabilities in whichthe user device may respond to a voice command by performing acorresponding action on the user device (e.g., playing of audio or videocontent, executing a web search, determining directions, controlling aconnected device, such as lights, climate controllers, etc.). As userdevices with voice recognition capabilities become more prevalent,multiple user devices may be implemented or located within relativelyshort range of each other in which audio from a voice command may be“heard” or received by the user devices. In other words, at any onetime, a single user may be carrying (or near) more than one user devicehaving voice recognition capabilities (e.g., when user devices areimplemented in a car, at home, office, etc.). As such, a situation mayarise in which multiple user devices may each receive a single voicecommand from the user, which may result in multiple user devicesinadvertently responding to the voice command.

Current systems lack a technique for determining which user deviceshould respond to a voice command. Accordingly, there is a need for asystem to analyze relevant data for determining which user device shouldrespond to a voice command.

SUMMARY

In an aspect of the invention, a computer-implemented method includes:exchanging, by a first participating user device, device data,associated with the first participating user device, with the one ormore second participating user devices; receiving, by the firstparticipating user device, audio data associated with a voice command;exchanging, by the first participating user device, the audio data withthe one or more second participating user devices; identifying, by thefirst participating user device, a voice command based on exchanging theaudio data; determining, by the first participating user device, whichone of the first participating user device or the one or more secondparticipating user devices should respond to the voice command based ondetails of the voice command and the exchanging the device data;responding, by the first participating user device, to the voice commandbased on determining that the first participating user device shouldrespond to the voice command; and signaling, by the first participatinguser device, a particular second participating user device to respond tothe voice command based on determining that the particular secondparticipating user device should respond to the voice command.Advantageously, aspects of the present invention may determine whichparticipating user device should respond to a voice command, preventingother user devices from inadvertently responding to the voice command.Aspects of the present invention may also form a combined audio dataobject based on the exchanging the audio data, wherein the combinedaudio data object includes most audibly legible portions of audio dataobtained by each of the first participating user devices and the one ormore second participating user devices.

In an aspect of the invention, there is a computer program product forimproving the performance of recognizing and executing voice commands.The computer program product includes a computer readable storage mediumhaving program instructions embodied therewith, the program instructionsexecutable by a first participating user device to cause the firstparticipating user device to: establish a communications link with oneor more second participating user devices; exchange, via thecommunications link, device data, associated with the firstparticipating user device, with the one or more second participatinguser devices; receive audio data associated with a voice command;determine which one of the first participating user device or the one ormore second participating user devices should respond to the voicecommand based on details of the voice command and the exchanging thedevice data; respond to the voice command based on determining that thefirst participating user device should respond to the enhanced voicecommand; and signal a particular second participating user device torespond to the voice command based on determining that the particularsecond participating user device should responds to the voice command.Advantageously, aspects of the present invention may determine whichparticipating user device should respond to a voice command, preventingother user devices from inadvertently responding to the voice command.In accordance with aspects of the present invention, the establishingthe communications link is based on security policies permitting theestablishing the communications link to be established with the one ormore second user devices.

In an aspect of the invention, a system includes: a CPU, a computerreadable memory and a computer readable storage medium associated with afirst participating user device; program instructions to establish acommunications link with one or more second participating user devices;program instructions to receive audio data associated with a voicecommand; program instructions to exchange, via the communications link,the audio data with the one or more second participating user devices;program instructions to form a combined audio data object based on theexchanging the audio data; program instructions to identify an enhancedvoice command from the combined audio data object; program instructionsto determining which one of the first participating user device or theone or more second participating user devices should respond to theenhanced voice command based on details of the enhanced voice command;program instructions to respond to the enhanced voice command based ondetermining that the first participating user device should respond tothe enhanced voice command; and program instructions to signal aparticular second participating user device to respond to the enhancedvoice command based on determining that the particular secondparticipating user device should responds to the enhanced voice command.The program instructions are stored on the computer readable storagemedium for execution by the CPU via the computer readable memory.Advantageously, aspects of the present invention may determine whichparticipating user device should respond to a voice command, preventingother user devices from inadvertently responding to the voice command.In accordance with aspects of the present invention, the combined audiodata object includes most audibly legible portions of audio dataobtained by each of the first participating user devices and the one ormore second participating user devices.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is described in the detailed description whichfollows, in reference to the noted plurality of drawings by way ofnon-limiting examples of exemplary embodiments of the present invention.

FIG. 1 depicts a cloud computing node according to an embodiment of thepresent invention.

FIG. 2 depicts a cloud computing environment according to an embodimentof the present invention.

FIG. 3 depicts abstraction model layers according to an embodiment ofthe present invention.

FIGS. 4A-4C show an overview of an example implementation in accordancewith aspects of the present invention

FIG. 5 shows an example environment in accordance with aspects of thepresent invention.

FIG. 6 shows a block diagram of example components of a voice commandcoordination component in accordance with aspects of the presentinvention.

FIG. 7 shows an example flowchart of a process for coordinating theresponse to a voice command among a group of user devices in accordancewith aspects of the present invention.

DETAILED DESCRIPTION

The present invention generally relates to recognizing and executingvoice commands and, more particularly, to recognizing and coordinatingthe execution of voice commands across multiple connected devices. Atany one time, a single user may be carrying (or near) more than one userdevice having voice recognition capabilities (e.g., when user devicesare implemented in a car, at home, office, etc.). As such, a situationmay arise in which multiple user devices may each receive a single voicecommand from the user, which may result in multiple user devicesinadvertently responding to the voice command.

Accordingly, aspects of the present invention may connect multiple userdevices together to create a voice command communications link in whichthe connected multiple user devices may communicate with each other todetermine which user device, of the multiple user devices, shouldexecute the command. Additionally, aspects of the present invention mayimprove the recognition of a voice command by combining together themost audibly decipherable portions of audio data received by each ofmultiple distributed user devices to form a combined audio data object.As such, accuracy of voice command recognition is improved, therebyimproving the accuracy of executing intended voice commands. Further,the user devices may analyze the command identified in the combinedaudio data object and determine which user device, of the multiple userdevices, should execute the command.

As described herein, aspects of the present invention may provide atechnical solution to the technical problem of determining which userdevice should execute a voice command. For example, aspects of thepresent invention may solve the above technical problem based on deviceprofiles shared by each of multiple user devices, user device settings,activity information, audio data heard, keywords, etc. As a specific,non-limiting example, aspects of the present invention may determinethat a user device that is currently playing music should respond to avoice command to skip a music track, whereas another user device that isnot currently playing music should not respond to such a command. Asanother example, aspects of the present invention may provide atechnical solution to the above-mentioned technical problem bydetermining that a user device that is currently playing music shouldrespond to a voice command to adjust a volume setting, whereas anotheruser device that is not currently playing music should not respond tosuch a command. As another example, aspects of the present invention mayprovide a technical solution to the above-mentioned technical problem bydetermining that a particular user device should respond to a voicecommand based on recognizing a particular individual that has given thecommand (e.g., based on voice recognition techniques). As anotherexample, aspects of the present invention may provide a technicalsolution to the above-mentioned technical problem by determining that aparticular user device should respond to a voice command based on thecapabilities of the user device and the nature of the command.Specifically, aspects of the present invention may determine that aparticular user device that is connected and registered to a homeautomation controller should respond to a verbal command relating tocontrolling a setting via the home automation controller. As describedherein, priority rules, criteria, user preferences, and/or conflictresolution rules may be used to identify which device should respond toa verbal command.

As described herein, different types of user devices may respond todifferent keywords. For example, keywords may include a “wake” commandthat instructs a user device to respond to subsequent a voice inputspoken shortly after the wake command. Additionally, or alternatively,keywords may define the type of command to execute based on thecapabilities or operating system of the user device. Additionally, oralternatively, keywords may include predefined phrases that instruct auser device to perform a corresponding action. In embodiments, multipleuser devices may share keywords with each other in order to improve theresponsiveness of voice commands, and to determine which device shouldrespond to a command. As an example, if a first user device “hears” akeyword or phrase associated with a second user device, but the seconduser device does not “hear” the keyword or phrase, the first user devicemay provide the second user device with an indication that the keywordor phrase was heard by the first user device. Accordingly, the seconduser device may perform a corresponding action even if the second userdevice did not sufficiently “hear” the keyword.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

It is understood in advance that although this disclosure includes adetailed description on cloud computing, implementation of the teachingsrecited herein are not limited to a cloud computing environment. Rather,embodiments of the present invention are capable of being implemented inconjunction with any other type of computing environment now known orlater developed.

Cloud computing is a model of service delivery for enabling convenient,on-demand network access to a shared pool of configurable computingresources (e.g. networks, network bandwidth, servers, processing,memory, storage, applications, virtual machines, and services) that canbe rapidly provisioned and released with minimal management effort orinteraction with a provider of the service. This cloud model may includeat least five characteristics, at least three service models, and atleast four deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provisioncomputing capabilities, such as server time and network storage, asneeded automatically without requiring human interaction with theservice's provider.

Broad network access: capabilities are available over a network andaccessed through standard mechanisms that promote use by heterogeneousthin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to servemultiple consumers using a multi-tenant model, with different physicaland virtual resources dynamically assigned and reassigned according todemand. There is a sense of location independence in that the consumergenerally has no control or knowledge over the exact location of theprovided resources but may be able to specify location at a higher levelof abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elasticallyprovisioned, in some cases automatically, to quickly scale out andrapidly released to quickly scale in. To the consumer, the capabilitiesavailable for provisioning often appear to be unlimited and can bepurchased in any quantity at any time.

Measured service: cloud systems automatically control and optimizeresource use by leveraging a metering capability at some level ofabstraction appropriate to the type of service (e.g., storage,processing, bandwidth, and active user accounts). Resource usage can bemonitored, controlled, and reported providing transparency for both theprovider and consumer of the utilized service.

Service Models are as follows:

Software as a Service (SaaS): the capability provided to the consumer isto use the provider's applications running on a cloud infrastructure.The applications are accessible from various client devices through athin client interface such as a web browser (e.g., web-based e-mail).The consumer does not manage or control the underlying cloudinfrastructure including network, servers, operating systems, storage,or even individual application capabilities, with the possible exceptionof limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer isto deploy onto the cloud infrastructure consumer-created or acquiredapplications created using programming languages and tools supported bythe provider. The consumer does not manage or control the underlyingcloud infrastructure including networks, servers, operating systems, orstorage, but has control over the deployed applications and possiblyapplication hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to theconsumer is to provision processing, storage, networks, and otherfundamental computing resources where the consumer is able to deploy andrun arbitrary software, which can include operating systems andapplications. The consumer does not manage or control the underlyingcloud infrastructure but has control over operating systems, storage,deployed applications, and possibly limited control of select networkingcomponents (e.g., host firewalls).

Deployment Models are as follows:

Private cloud: the cloud infrastructure is operated solely for anorganization. It may be managed by the organization or a third party andmay exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by severalorganizations and supports a specific community that has shared concerns(e.g., mission, security requirements, policy, and complianceconsiderations). It may be managed by the organizations or a third partyand may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the generalpublic or a large industry group and is owned by an organization sellingcloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or moreclouds (private, community, or public) that remain unique entities butare bound together by standardized or proprietary technology thatenables data and application portability (e.g., cloud bursting forload-balancing between clouds).

A cloud computing environment is service oriented with a focus onstatelessness, low coupling, modularity, and semantic interoperability.At the heart of cloud computing is an infrastructure comprising anetwork of interconnected nodes.

Referring now to FIG. 1, a schematic of an example of a cloud computingnode is shown. Cloud computing node 10 is only one example of a suitablecloud computing node and is not intended to suggest any limitation as tothe scope of use or functionality of embodiments of the inventiondescribed herein. Regardless, cloud computing node 10 is capable ofbeing implemented and/or performing any of the functionality set forthhereinabove.

In cloud computing node 10 there is a computer system/server 12, whichis operational with numerous other general purpose or special purposecomputing system environments or configurations. Examples of well-knowncomputing systems, environments, and/or configurations that may besuitable for use with computer system/server 12 include, but are notlimited to, personal computer systems, server computer systems, thinclients, thick clients, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, network PCs, minicomputer systems, mainframecomputer systems, and distributed cloud computing environments thatinclude any of the above systems or devices, and the like.

Computer system/server 12 may be described in the general context ofcomputer system executable instructions, such as program modules, beingexecuted by a computer system. Generally, program modules may includeroutines, programs, objects, components, logic, data structures, and soon that perform particular tasks or implement particular abstract datatypes. Computer system/server 12 may be practiced in distributed cloudcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed cloud computing environment, program modules may be locatedin both local and remote computer system storage media including memorystorage devices.

As shown in FIG. 1, computer system/server 12 in cloud computing node 10is shown in the form of a general-purpose computing device. Thecomponents of computer system/server 12 may include, but are not limitedto, one or more processors or processing units 16, a system memory 28,and a bus 18 that couples various system components including systemmemory 28 to processor 16.

Bus 18 represents one or more of any of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, and a processor or local bus using any of avariety of bus architectures. By way of example, and not limitation,such architectures include Industry Standard Architecture (ISA) bus,Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnects (PCI) bus.

Computer system/server 12 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 12, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 28 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 30 and/or cachememory 32. Computer system/server 12 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 34 can be provided forreading from and writing to a nonremovable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 18 by one or more datamedia interfaces. As will be further depicted and described below,memory 28 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the invention.

Program/utility 40, having a set (at least one) of program modules 42,may be stored in memory 28 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. Program modules 42 generally carry out the functions and/ormethodologies of embodiments of the invention as described herein.

Computer system/server 12 may also communicate with one or more externaldevices 14 such as a keyboard, a pointing device, a display 24, etc.;one or more devices that enable a user to interact with computersystem/server 12; and/or any devices (e.g., network card, modem, etc.)that enable computer system/server 12 to communicate with one or moreother computing devices. Such communication can occur via Input/Output(I/O) interfaces 22. Still yet, computer system/server 12 cancommunicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 20. As depicted, network adapter 20communicates with the other components of computer system/server 12 viabus 18. It should be understood that although not shown, other hardwareand/or software components could be used in conjunction with computersystem/server 12. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

Referring now to FIG. 2, illustrative cloud computing environment 50 isdepicted. As shown, cloud computing environment 50 comprises one or morecloud computing nodes 10 with which local computing devices used bycloud consumers, such as, for example, personal digital assistant (PDA)or cellular telephone 54A, desktop computer 54B, laptop computer 54C,and/or automobile computer system 54N may communicate. Nodes 10 maycommunicate with one another. They may be grouped (not shown) physicallyor virtually, in one or more networks, such as Private, Community,Public, or Hybrid clouds as described hereinabove, or a combinationthereof. This allows cloud computing environment 50 to offerinfrastructure, platforms and/or software as services for which a cloudconsumer does not need to maintain resources on a local computingdevice. It is understood that the types of computing devices 54A-N shownin FIG. 2 are intended to be illustrative only and that computing nodes10 and cloud computing environment 50 can communicate with any type ofcomputerized device over any type of network and/or network addressableconnection (e.g., using a web browser).

Referring now to FIG. 3, a set of functional abstraction layers providedby cloud computing environment 50 (FIG. 2) is shown. It should beunderstood in advance that the components, layers, and functions shownin FIG. 3 are intended to be illustrative only and embodiments of theinvention are not limited thereto. As depicted, the following layers andcorresponding functions are provided:

Hardware and software layer 60 includes hardware and softwarecomponents. Examples of hardware components include: mainframes 61; RISC(Reduced Instruction Set Computer) architecture based servers 62;servers 63; blade servers 64; storage devices 65; and networks andnetworking components 66. In some embodiments, software componentsinclude network application server software 67 and database software 68.

Virtualization layer 70 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers71; virtual storage 72; virtual networks 73, including virtual privatenetworks; virtual applications and operating systems 74; and virtualclients 75.

In one example, management layer 80 may provide the functions describedbelow. Resource provisioning 81 provides dynamic procurement ofcomputing resources and other resources that are utilized to performtasks within the cloud computing environment. Metering and Pricing 82provide cost tracking as resources are utilized within the cloudcomputing environment, and billing or invoicing for consumption of theseresources. In one example, these resources may comprise applicationsoftware licenses. Security provides identity verification for cloudconsumers and tasks, as well as protection for data and other resources.User portal 83 provides access to the cloud computing environment forconsumers and system administrators. Service level management 84provides cloud computing resource allocation and management such thatrequired service levels are met. Service Level Agreement (SLA) planningand fulfillment 85 provide pre-arrangement for, and procurement of,cloud computing resources for which a future requirement is anticipatedin accordance with an SLA.

Workloads layer 90 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: mapping andnavigation 91; software development and lifecycle management 92; virtualclassroom education delivery 93; data analytics processing 94;transaction processing 95; and voice command coordination 96.

Referring back to FIG. 1, the program/utility 40 may include one or moreprogram modules 42 that generally carry out the functions and/ormethodologies of embodiments of the invention as described herein (e.g.,such as the functionality provided by voice command coordination 96).Specifically, the program modules 42 may establish a voice commandcommunications link with other user devices, exchange device data,receive audio input data, exchange audio data with other user devices,form a combined audio data object, identify a command included in thecombined audio data object, identify a device to respond to the commandbased on criteria and device data, and determine which user device inthe communications link with which to execute the command. Otherfunctionalities of the program modules 42 are described further hereinsuch that the program modules 42 are not limited to the functionsdescribed above. Moreover, it is noted that some of the modules 42 canbe implemented within the infrastructure shown in FIGS. 1-3. Forexample, the modules 42 may be representative of a voice commandcoordination component as shown in FIG. 5.

FIGS. 4A-4C show an overview of an example implementation in accordancewith aspects of the present invention. As shown in FIG. 4A, a group ofuser devices 210 (e.g., user device 210-1, user device 210-2, and userdevice 210-3) may establish a voice command communications link witheach other via a suitable communications network or connection protocol(e.g., via a personal area network (PAN), local area network (LAN),etc.). In embodiments, the voice command communications link may beestablished between user devices 210 that have a previously establishedtrust relationship and when the user devices 210 are within a thresholdproximity of each other (e.g., as identified based on locationdetermination techniques). As described herein, the voice commandcommunications link may be established in order for multiple userdevices 210 to coordinate the execution of a voice command when thevoice command is “heard” (e.g., when audio is received via an audioinput device/microphone) by the multiple user devices 210 (e.g., in asituation in which the multiple user devices 210 are located inrelatively close proximity to each other, such as when the multiple userdevices 210 are located in the same room). For example, in a typicalsituation, each of the multiple user devices 210 may “hear” a voicecommand, and may each attempt to respond to the voice command, even whenthe user only intends for one of the user devices 210 to respond to thecommand. Accordingly, the voice command communications link may beestablished in order for multiple user devices 210 to coordinate theexecution of a voice command when the voice command is “heard.” Also, asdescribed herein, the voice command communications link may beestablished in order to improve the recognition of a voice command.

Continuing with the above, after establishing the communications link,each of user device 210-1, user device 210-2, and user device 210-3 mayshare device data with each other. As described herein, the device datamay include device activity information (e.g., programs that are runningon each user device 210). The device data may also include keywords(e.g., words, phrases, wake commands, etc.) to which each device isconfigured to respond. For example, different user devices may operateon different operating systems that are pre-configured to respond to adifferent set of keywords, phrases, or voice commands. As describedherein, sharing of keywords may better coordinate the execution of aspoken command (e.g., by signaling the command, by a user device that“heard” the command, to a user device that did not “hear” the command,but should respond to the command). As further shown in FIG. 4A, each ofuser device 210-1, user device 210-2, and user device 210-3 may shareaudio data (e.g., audio data that is associated with a verbal commandspoken by a user and received by audio input devices implemented by eachuser device 210). As described herein, sharing of the audio data mayimprove the recognition of the verbal command as well as theresponsiveness to the verbal command.

As shown in FIG. 4B, the most audibly legible or highest qualityportions of audio data received by each of user device 210-1, userdevice 210-2, and user device 210-3 may be combined to form a combinedaudio data object. For example, as shown in FIG. 4B, a portion ofdegraded audio quality data from audio data 1 (e.g., audio data fromuser device 210-1) may be replaced with a portion of higher quality ormore audibly legible audio data from audio data 2 or audio data 3. Inthis way, the combined audio data object includes only the audio fromthe highest quality portions of audio data received across all userdevices 210. In embodiments, each user device 210 may form a combinedaudio data object based on the sharing of audio data. Alternatively, adesignated “master” user device 210 may form the combined audio dataobject and provide the combined audio data object to the other userdevices 210 in the verbal command communications link. In this way,recognition of a command may be improved since the combined audio dataobject includes highest quality portions of audio data received acrossmultiple user devices 210.

As shown in FIG. 4C, each of user device 210-1, user device 210-2, anduser device 210-3 may signal a command (e.g., as recognized from thecombined audio data object), to an appropriate user device 210 thatshould respond to the command. As described herein, the user device 210that should respond to the command may be determined based on the devicedata (e.g., the keywords, device activity), the nature of the command ortype of command, and/or other criteria. In embodiments, each user device210 may determine which user device 210 should respond to the command,and may signal that user device 210 to respond to the command. Aparticular user device 210 that receives a signaling message frommajority of the user devices 210 in the verbal command communicationslink may respond to the command. Alternatively, in one embodiment, adesignated “master” user device 210 may determine which user device 210should respond to the command, and instruct the determined user device210 to respond to the command.

As a specific, non-limiting example, aspects of the present inventionmay determine that a user device 210 that is currently playing musicshould respond to a voice command to skip a music track, whereas anotheruser device 210 that is not currently playing music should not respondto such a command. As another example, aspects of the present inventionmay determine that a user device that is currently playing music shouldrespond to a voice command to adjust a volume setting, whereas anotheruser device 210 that is not currently playing music should not respondto such a command. As another example, aspects of the present inventionmay determine that a particular user device 210 should respond to avoice command based on recognizing a particular individual that hasgiven the command (e.g., based on voice recognition techniques). Asdescribed herein, priority rules, criteria, user preferences, and/orconflict resolution rules may be used to identify which user device 210device should respond to a verbal command. In this way, recognition of averbal command is improved, as well as the coordination of responding toor executing the verbal command by an appropriate user device 210 in asituation in which multiple user devices 210 “hear” a command (e.g.,when the user devices 210 are within relatively close proximity to eachother).

FIG. 5 shows an example environment in accordance with aspects of thepresent invention. As shown in FIG. 5, environment 500 may include userdevices 210 (referred to individually as “user device 210” orcollectively as “user devices 210”), application server 220, and network230. In embodiments, one or more components in environment 500 maycorrespond to one or more components in the cloud computing environmentof FIG. 2. In embodiments, one or more components in environment 500 mayinclude the components of computer system/server 12 of FIG. 1.

The user device 210 may include a computing device capable ofcommunicating via a network, such as the network 230. For example, theuser device 210 may correspond to a mobile communication device (e.g., asmart phone or a personal digital assistant (PDA)), a portable computerdevice (e.g., a laptop or a tablet computer), or another type of device.In some embodiments, the user device 210 may include one or more audioinput devices (e.g., microphones) to receive audio input, such as averbal command from a user. The user device 210 may include a voicecommand response system to respond to and/or execute verbal commands.

As further shown in FIG. 5 each user device 210 may include a voicecommand coordination component 215. The voice command coordinationcomponent 215 may perform one or more functions relating to theestablishment of a verbal command communications link, joining anexisting verbal command communications link, and sharing keywords,device data, and/or audio data. The voice command coordination component215 may also create a combined audio data object, and determine whichuser device 210 in a group of user devices 210 connected via the verbalcommand communications link should respond to a verbal command.

The application server 220 may include one or more computing devices(e.g., such as computer system/server 12 of FIG. 1) that communicateswith the user device 210 in connection with performing a task associatedwith a voice command. For example, the application server 220 mayinclude a searching system, a web server, a device controller, or thelike. The user device 210 may communicate with the application server220 to perform a task, such as performing a search, adjusting settingson an automation device via a controller, etc.

The network 230 may include one or more types of computer networksrelating to a verbal command communications link between one or moreuser devices 210. In embodiments, the network 230 may include networknodes, such as network nodes 10 of FIG. 2. Additionally, oralternatively, the network 230 may include one or more wired and/orwireless networks. For example, the network 230 may include a PAN (e.g.,including BLUETOOTH and/or other types of personal area networks), aNear-Field Communications (NFC) network, a cellular network (e.g., asecond generation (2G) network, a third generation (3G) network, afourth generation (4G) network, a fifth generation (5G) network, along-term evolution (LTE) network, a global system for mobile (GSM)network, a code division multiple access (CDMA) network, anevolution-data optimized (EVDO) network, or the like), a public landmobile network (PLMN), and/or another network. Additionally, oralternatively, the network 230 may include a local area network (LAN), awide area network (WAN), a metropolitan network (MAN), the PublicSwitched Telephone Network (PSTN), an ad hoc network, a managed InternetProtocol (IP) network, a virtual private network (VPN), an intranet, theInternet, a fiber optic-based network, and/or a combination of these orother types of networks.

The quantity of devices and/or networks in the environment 500 is notlimited to what is shown in FIG. 5. In practice, the environment 500 mayinclude additional devices and/or networks; fewer devices and/ornetworks; different devices and/or networks; or differently arrangeddevices and/or networks than illustrated in FIG. 5. Also, in someimplementations, one or more of the devices of the environment 500 mayperform one or more functions described as being performed by anotherone or more of the devices of the environment 500. Devices of theenvironment 500 may interconnect via wired connections, wirelessconnections, or a combination of wired and wireless connections.

FIG. 6 shows a block diagram of example components of a voice commandcoordination component in accordance with aspects of the presentinvention. As shown in FIG. 6, the voice command coordination component215 may include a communications module 610, an audio input module 620,a combined audio data object generation module 630, a device informationsharing module 640, a voice command response criteria repository 650,and a voice command signaling and execution module 660. In embodiments,the voice command coordination component 215 may include additional orfewer components than those shown in FIG. 6. In embodiments, separatecomponents may be integrated into a single computing component ormodule. Additionally, or alternatively, a single component may beimplemented as multiple computing components or modules.

The communications module 610 may include a program module (e.g.,program module 42 of FIG. 1) that may be used to establish a verbalcommand communications link and/or join an existing verbal commandcommunications link. In embodiments, the communications module 610 mayestablish or join the verbal command communications link based ondiscovering nearby participating user devices 210 that have beenpre-configured or instructed by a user to participate in a verbalcommand communications link. In embodiments, the communications module610 may discover the participating user devices 210 via a network (e.g.,LAN, a PAN, an NFC network, etc.). The communications module 610 maystore information identifying particular user devices 210 that havepreviously established trust relationships and may establish or join averbal command communications link with these user devices 210. Inembodiments, the communications module 610 may establish or join theverbal command communications link when the user device 210 associatedwith the communications module 610 is located within a thresholddistance of other participating user devices 210. As described herein,audio input data may be shared via the voice command communicationslink. Additionally, or alternatively, device data may be shared via thevoice command communications link (e.g., device activity information,device-specific commands, device-specific keywords, device capabilities,etc.).

The audio input module 620 may include a program module (e.g., programmodule 42 of FIG. 1) that may receive audio input data (e.g., from anaudio input component, such as a microphone). The audio input module 620may provide the audio data to the communications module 610 for sharingreceived audio data (e.g., corresponding to voice commands) to thecommunications module 610. In embodiments, the audio input module 620may implement background noise cancellation techniques in order toimprove the quality of audio data shared via the communications module610.

The combined audio data object generation module 630 may include aprogram module (e.g., program module 42 of FIG. 1) that may receiveaudio input data shared by other user devices 210 via the communicationsmodule 610 (e.g., user devices 210 that are in communication with eachother via a voice command communications link). The combined audio dataobject generation module 630 may combine multiple audio data objects orstreams into a single combined audio data object by retaining the mostaudibly legible (e.g., audibly decipherable) portions of audio “heard”across all the user devices 210. In embodiments, the combined audio dataobject generation module 630 may identify the most audibly legibleportions based on audio analysis techniques. More specifically, thecombined audio data object generation module 630 may identify illegibleportions by comparing voiceprints associated with the audio data tovoiceprints of static, background noise, and/or other obstructions thatare consistent with illegible audio. Additionally, or alternatively, thecombined audio data object generation module 630 may identify audiblyillegible portions based on volume levels (e.g., portions of the audiothat are less than a particular volume may be considered audiblyillegible). In embodiments, the combined audio data object generationmodule 630 may score portions of the audio data (e.g., score each secondor half-second of audio data) based on a level of legibility. Thecombined audio data object generation module 630 may retain the highestscored portions of audio data received or “heard” across all userdevices 210 to form a combined audio data object that includes only themost audibly legible portions of audio. As described herein, thecombined audio data object may be used to identify a voice command andperform a corresponding action by an identified user device 210connected in the voice command communications link.

The device information sharing module 640 may include a program module(e.g., program module 42 of FIG. 1) that may share device informationabout the user device 210 to other user devices 210 connected to thevoice command communications link. For example, the device informationsharing module 640 may share the device information via thecommunications module 610. In embodiments, the device informationsharing module 640 may share device information, such as device activityinformation, device-specific commands, device-specific keywords, devicecapabilities, etc. As described herein, the device information may beused to identify which device should respond to a voice command.

The voice command response criteria repository 650 may include a datastorage device (e.g., storage system 34 of FIG. 1) that stores criteriastipulating which user device 210 connected to the voice communicationslink should respond to a voice command (e.g., a voice command includedin the combined audio data object). For example, the voice commandresponse criteria repository 650 may store criteria that stipulateconditions under which one user device 210 should responds to the voicecommand over another user device. More specifically, the voice commandresponse criteria repository 650 may store criteria that stipulate thatone user device 210 versus another user device 210 should respond to avoice command based on the nature, type, or content of the voicecommand, the current activity of the user devices 210, thekeywords/phrases that are associated with the user devices 210,relationships with the user devices 210 to other devices (e.g., homeautomation control devices) etc.

As a specific, non-limiting example, the voice command response criteriarepository 650 may store criteria that stipulate that a user device 210that is currently playing music should respond to a voice command toadjust a volume setting, whereas another user device 210 that is notcurrently playing music should not respond to such a command. As anotherexample, the voice command response criteria repository 650 may storecriteria that stipulate that a particular user device 210 should respondto a voice command based on recognizing a particular individual that hasgiven the command (e.g., based on voice recognition techniques). Asanother example, the voice command response criteria repository 650 maystore criteria that stipulate that a particular user device 210 shouldrespond to a voice command based on the capabilities of that user device210 (e.g., a user device 210 that has an association with a homeautomation component should respond to a voice command). As anotherexample, the voice command response criteria repository 650 may storecriteria that stipulate that a particular user device 210 should respondto a voice command based on the keywords or phrases associated with thatuser device 210. In this way, the best-suited user device 210 willrespond to the voice command whereas other user devices 210 may notrespond to the voice command, thereby preventing duplicative executionof the voice command, and also preventing erroneous responses to thevoice command.

In embodiments, the voice command response criteria repository 650 mayinclude scoring criteria in order to score each user device 210connected to the voice command communications link. As described herein,the score may indicate a level of suitability for each user device 210to respond to the voice command. The user device 210 having the highestscore may be directed to execute the voice command. As described herein,the scoring may be based on the content/type of voice command, currentactivity of each user device 210, the capabilities of each user device210, the keywords/phrases associated with each user device 210,relationships with other connected devices, etc. Scores may berelatively higher for user devices 210 whose capabilities, more closelymatch the current activity, capabilities, keywords/phrases,relationships with other devices, etc.

The voice command signaling and execution module 660 may include aprogram module (e.g., program module 42 of FIG. 1) that may determinewhich user device 210 connected to the voice command communications linkshould respond to a voice command from the combined audio data objectbased on the information stored by the voice command response criteriarepository 650. For example, the voice command signaling and executionmodule 660 may identify a voice command from the combined audio dataobject using speech recognition and/or natural language processingtechniques. In embodiments, the voice command signaling and executionmodule 660 may signal, to the other user devices 210, which user device210 should respond to the voice command. The voice command signaling andexecution module 660 may receive signals from other user devices 210.The voice command signaling and execution module 660 for each userdevice 210 may then coordinate with each other to determine which userdevice 210 should execute the command based on, for example, a “voting”system in which the user device 210 that receives a majority of “votes”to respond to the voice command will be the user device 210 to respondto the command. Alternatively, a particular user device 210 may bedesignated as a “master” that will make a final decision as to whichuser device 210 should respond to a voice command based on the signalsreceived from each of the other user devices 210. In embodiments, thevoice command signaling and execution module 660 may score each userdevice 210 based on the information stored by the voice command responsecriteria repository 650, and may share the scores with other userdevices 210 to determine which user device 210 should respond to a voicecommand (e.g., based on an average of the scores received for each userdevice 210).

As an illustrative example, the voice command signaling and executionmodule 660 of user device 210-1 may receive, from voice commandsignaling and execution module 660 s of other user devices 210, signalsthat indicate that the user device 210-1 should respond to a voicecommand. The voice command signaling and execution module 660 of userdevice 210-1 may also determine that itself should respond to the voicecommand. Accordingly, the voice command signaling and execution module660 of user device 210-1 may execute an action in response to the voicecommand.

As another example, the voice command signaling and execution module 660of user device 210-1 may determine that it should respond to a voicecommand rather than other user devices 210 in a situation in which theuser device 210-1 did not initially “hear” the voice command, butextracted the voice command form a combined audio data object that wasgenerated based on the other user devices 210 “hearing” the voicecommand. For example, if the voice command includes a keyword specificto the user device 210-1, but the user device 210-1 did not “hear” thevoice command, the user device 210-1 may still respond to the voicecommand based on extracting the voice command from the combined audiodata object and by receiving signals from the other user devices 210that user device 210-1 should respond to the voice command.

FIG. 7 shows an example flowchart of a process for coordinating theresponse to a voice command among a group of user devices in accordancewith aspects of the present invention. The steps of FIG. 7 may beimplemented in the environment of FIG. 5, for example, and are describedusing reference numbers of elements depicted in FIG. 5. As noted above,the flowchart illustrates the architecture, functionality, and operationof possible implementations of systems, methods, and computer programproducts according to various embodiments of the present invention.

As shown in FIG. 7, process 700 may include discovering participatinguser devices and establish voice command communications link (step 705).For example, as described above with respect to the communicationsmodule 610, the voice command coordination component 215 associated witha user device 210-1 may establish a voice command communications linkand/or join an existing voice command communications link. Inembodiments, the voice command coordination component 215 may establishor join the voice command communications link based on discoveringnearby participating user devices 210 that have been pre-configured orinstructed by a user to participate in a voice command communicationslink. In embodiments, the voice may discover the participating userdevices 210 via a network (e.g., LAN, a PAN, an NFC network, etc.). Inembodiments, the voice command coordination component 215 may establishor join the verbal command communications link when user device 210-1and participating user devices 210 are located within a thresholddistance of each other.

Process 700 may also include exchanging device data with participatinguser devices (step 710). For example, as described above with respect tothe device information sharing module 640, voice command coordinationcomponent 215 may share device information about the user device 210-1to other participating user devices 210 connected to the voice commandcommunications link. For example, the voice command coordinationcomponent 215 may share the device information via the communicationsmodule 610. In embodiments, the voice command coordination component 215may share device information, such as device activity information,device-specific commands, device-specific keywords, device capabilities,etc.

Process 700 may further include receiving audio input data (step 715).For example, as described above with respect to the combined audio dataobject generation module 630, voice command coordination component 215may receive audio input data (e.g., from an audio input component, suchas a microphone). In embodiments, the voice command coordinationcomponent 215 may implement background noise cancellation techniques inorder to improve the quality of audio data shared via the communicationsmodule 610.

Process 700 may also include exchanging audio input data withparticipating user devices (step 720). For example, as described abovewith respect to the combined audio data object generation module 630,voice command coordination component 215 may exchange audio input datawith other participating user devices 210 (e.g., user devices 210connected to the voice command communications link).

Process 700 may further include forming a combined audio data object(step 725). For example, as described above with respect to the combinedaudio data object generation module 630, voice command coordinationcomponent 215 may combine multiple audio data objects or streams into asingle combined audio data object by retaining the most audibly legibleportions of audio “heard” across the user device 210-1 and otherparticipating user devices 210. In embodiments, the voice commandcoordination component 215 may identify the most audibly legibleportions based on audio analysis techniques.

Process 700 may also include identifying an enhanced voice command fromthe combined audio data object (step 730). For example, as describedabove with respect to the voice command signaling and execution module660, voice command coordination component 215 may identify a voicecommand (e.g., an enhanced voice command) from the combined audio dataobject using speech recognition and/or natural language processingtechniques.

Process 700 may further include identifying a user device to respond tocommand based on criteria and device data and output informationidentifying user device to respond to command (step 735). For example,as described above with respect to the voice command signaling andexecution module 660, voice command coordination component 215 maydetermine which participating user device 210 connected to the voicecommand communications link should respond to a voice command from thecombined audio data object based on the information stored by the voicecommand response criteria repository 650. The voice command coordinationcomponent 215 may output information or a signal identifying whichparticipating user device 210 should respond to the voice command. Thevoice command coordination component 215 may receive information fromthe other participating user devices 210 that indicate the decisionsmade by the other participating user devices 210 as to which userdevices 210 should respond to the voice command. As described herein,the information identifying which user device 210 to respond to thecommand may include a scoring value indicating the level of suitabilityfor each of the participating user devices 210 to respond to the voicecommand.

Process 700 may also include finalizing the determination of whichparticipating user device to respond to voice command (step 740). Forexample, as described above with respect to the audio input module 620,voice command coordination component 215 s associated with the userdevice 210-1 and of each participating user device 210 may communicatewith each other to finalize which user device 210 should respond to thecommand. For example, the voice command coordination component 215 s maymake final determination that the participating user device 210 thatreceived the highest average score should respond to the voice command.Alternatively, a particular participating user device 210 may bedesignated as a “master” device that may make the final determination asto which participating user device 210 is to respond to the voicecommand.

Process 700 may further include determining whether another user deviceis to respond (step 745). For example, the voice command coordinationcomponent 215 may determine whether itself is to respond to the commandor if another voice command coordination component 215 associated with aparticipating user device 210 is to respond to the command (e.g., basedon the final determination of which participating user device 210 is torespond to the voice command). If another user device is to respond(e.g., other than user device 210-1), process 700 may include, at step755, signaling the other participating user device 210 that is torespond to the command (e.g., to notify that the other participatinguser device 210 should respond in the event that the other participatinguser device 210 did not “hear” or receive the voice command). Userdevice 210-1 may not take any further action on executing or respondingto the voice command. If, on the other hand, another user device is notto respond (step 745-NO), process 700 may include executing an actioncorresponding to the command (step 750). For example, the voice commandcoordination component 215 may execute the action corresponding to thecommand.

In accordance with process 700, described herein, each participatinguser device 210 may share device data, audio data, and/or other datawith each other in order to improve voice recognition of a command.Further, process 700 may determine which participating user device 210should respond to the command, direct that user device 210 to respond tothe command, and direct other user devices 210 to ignore the command. Inthis way, execution of the voice command may only be executed by asingle user device 210 in a situation in which multiple user devices 210may “hear” the command, thus eliminating duplication and/or unintendedexecution of the voice command by user device 210 that should notrespond to the voice command.

In embodiments, a service provider could offer to perform the processesdescribed herein. In this case, the service provider can create,maintain, deploy, support, etc., the computer infrastructure thatperforms the process steps of the invention for one or more customers.These customers may be, for example, any business that uses technology.In return, the service provider can receive payment from the customer(s)under a subscription and/or fee agreement and/or the service providercan receive payment from the sale of advertising content to one or morethird parties.

In still additional embodiments, the invention provides acomputer-implemented method, via a network. In this case, a computerinfrastructure, such as computer system/server 12 (FIG. 1), can beprovided and one or more systems for performing the processes of theinvention can be obtained (e.g., created, purchased, used, modified,etc.) and deployed to the computer infrastructure. To this extent, thedeployment of a system can comprise one or more of: (1) installingprogram code on a computing device, such as computer system/server 12(as shown in FIG. 1), from a computer-readable medium; (2) adding one ormore computing devices to the computer infrastructure; and (3)incorporating and/or modifying one or more existing systems of thecomputer infrastructure to enable the computer infrastructure to performthe processes of the invention.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A computer-implemented method comprising:exchanging, by a first participating user device, device data associatedwith the first participating user device with one or more secondparticipating user devices; receiving, by the first participating userdevice, audio data associated with a voice command; exchanging, by thefirst participating user device, the audio data with the one or moresecond participating user devices; forming, by the first participatinguser device, a combined audio data object based on the exchanging theaudio data; identifying, by the first participating user device, a voicecommand based on exchanging the audio data; determining, by the firstparticipating user device, which one of the first participating userdevice or the one or more second participating user devices responds tothe voice command based on details of the voice command and theexchanging the device data, the determining further comprisingcoordinating with the one or more second participating user devices tomake a final determination as to which one of the first participatinguser device or the one or more second participating user devices,responds to the voice command; responding, by the first participatinguser device, to the voice command based on determining that the firstparticipating user device responds to the voice command; and signaling,by the first participating user device, a particular secondparticipating user device to notify the particular second participatinguser device to respond to the voice command based on determining thatthe particular second participating user device responds to the voicecommand.
 2. The method of claim 1, wherein the device data is selectedfrom a group consisting of: device activity information; devicekeywords; device capabilities; and relationships and connections withother devices.
 3. The method of claim 1, wherein the exchanging thedevice data comprises: providing the device data associated with thefirst participating user device to the one or more second participatingusers via a communications link; and receiving, by the firstparticipating user device, device data associated with each of the oneor more second participating user devices from each of the one or moresecond participating user devices.
 4. The method of claim 1, wherein theexchanging the audio data comprises: providing the audio data, obtainedby the first participating user device, to the one or more secondparticipating users via a communications link; and receiving, by thefirst participating user device, audio data obtained by each of the oneor more second participating user devices from each of the one or moresecond participating user devices.
 5. The method of claim 1, furthercomprising establishing a communications link with the one or moresecond participating user devices, wherein the establishing thecommunications link comprises discovering the one or more secondparticipating user devices through at least one selected from the groupconsisting of: a local area network; a personal area network; and a nearfield communications network.
 6. The method of claim 5, wherein theestablishing the communications link is based on security policiespermitting the establishing the communications link to be establishedwith the one or more second user devices.
 7. The method of claim 1,wherein a service provider at least one of creates, maintains, deploysand supports the computing device.
 8. The method of claim 1, wherein theexchanging the device data, the receiving the audio data, the exchangingthe audio data, the forming the combined audio data object, theidentifying the voice command, the determining which one of the firstparticipating user device or the one or more second participating userdevices responds to the voice command, the responding to the voicecommand, and the signaling the particular second participating userdevice to respond to the voice command are provided by a serviceprovider on a subscription, advertising, and/or fee basis.
 9. The methodof claim 1, wherein the computing device includes software provided as aservice in a cloud environment.
 10. The method of claim 1, furthercomprising deploying a system for improving the performance ofrecognizing and executing voice commands, including providing a computerinfrastructure operable to perform the establishing the communicationslink, the exchanging the device data, the receiving the audio data, theexchanging the audio data, the forming the combined audio data object,the identifying the voice command, the identifying which one of thefirst participating user device or the one or more second participatinguser devices responds to the voice command, the responding to the voicecommand, and the signaling the signaling the particular secondparticipating user device to respond to the voice command.
 11. Themethod of claim 1, wherein the identifying which one of the firstparticipating user device or the one or more second participating userdevices responds to the voice command comprises designating the one ofthe first participating user device or the one or more secondparticipating user devices that is in operation as responding to thevoice command.
 12. A computer program product for improving theperformance of recognizing and executing voice commands, the computerprogram product comprising a computer readable storage medium havingprogram instructions embodied therewith, the program instructionsexecutable by a first participating user device to cause the firstparticipating user device to: establish a communications link with oneor more second participating user devices; exchange, via thecommunications link, device data, associated with the firstparticipating user device, with the one or more second participatinguser devices; form a combined audio data object based on the exchangeddevice data; receive audio data associated with a voice command;determine which one of the first participating user device or the one ormore second participating user devices responds to the voice commandbased on details of the voice command and the exchanging the devicedata, the determining further comprising coordinating with the one ormore second participating user devices to make a final determination asto which one of the first participating user device or the one or moresecond participating user devices, responds to the voice command;respond to the voice command based on determining that the firstparticipating user device responds to the voice command; and signal aparticular second participating user device to respond to the voicecommand based on determining that the particular second participatinguser device responds to the voice command.
 13. The computer programproduct of claim 12, wherein the device data is selected from a groupconsisting of: device activity information; device keywords; devicecapabilities; and relationships and connections with other devices. 14.The computer program product of claim 12, wherein the programinstructions to cause the first participating user device to exchangethe device data include program instructions to cause the firstparticipating user device to provide the device data, associated withthe first participating user device, to the one or more secondparticipating users via the communications link and program instructionsto cause the first participating user device to receive, from each ofthe one or more second participating user devices, device dataassociated with each of the one or more second participating userdevices.
 15. The computer program product of claim 12, wherein theprogram instructions to cause the first participating user device toestablish the communications link with the one or more secondparticipating user devices comprises program instructions to cause thefirst participating user device to discover the one or more secondparticipating user devices through at least one selected from the groupconsisting of: a local area network; a personal area network; and a nearfield communications network.
 16. The computer program product of claim15, wherein the program instructions to cause the first participatinguser device to establish the communications link are based on securitypolicies permitting the establishing the communications link to beestablished with the one or more second user devices.
 17. The computerprogram product of claim 12, wherein the program instructions to causethe first participating user device to identify which one of the firstparticipating user device or the one or more second participating userdevices responds to the voice command comprise program instructions tocause the first participating user device to designate the one of thefirst participating user device or the one or more second participatinguser devices that is in operation as responding to the voice command.18. A system comprising: a CPU, a computer readable memory and acomputer readable storage medium associated with a first participatinguser device; program instructions to establish a communications linkwith one or more second participating user devices; program instructionsto receive audio data associated with a voice command; programinstructions to exchange, via the communications link, the audio datawith the one or more second participating user devices; programinstructions to form a combined audio data object based on theexchanging the audio data; program instructions to identify an enhancedvoice command from the combined audio data object; program instructionsto determine which one of the first participating user device or the oneor more second participating user devices responds to the enhanced voicecommand based on details of the enhanced voice command; programinstructions to coordinate with the one or more second participatinguser devices to make a final determination as to which one of the firstparticipating user device or the one or more second participating userdevices responds to the voice command; program instructions to respondto the enhanced voice command based on determining that the firstparticipating user device responds to the enhanced voice command; andprogram instructions to signal a particular second participating userdevice to respond to the enhanced voice command based on determiningthat the particular second participating user device responds to theenhanced voice command, wherein the program instructions are stored onthe computer readable storage medium for execution by the CPU via thecomputer readable memory.
 19. The system of claim 18, wherein theprogram instructions identify which one of the first participating userdevice or the one or more second participating user devices responds tothe voice command comprise program instructions to designate the one ofthe first participating user device or the one or more secondparticipating user devices that is in operation as responding to thevoice command.